﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace GPSTracker.API.WCFService
{
    [ServiceContract]
    public interface IGPSServiceREST
    {
        //---------- Login  -------------------------
        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "CheckLoginByTempo",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        DataModel.SP_CheckLoginByTempoResult CheckLoginByTempo(DataModel.ClientData cd);

        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "CheckLoginByMobile",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        DataModel.SP_CheckLoginResult CheckLoginByMobile(DataModel.ClientData cd);


        //---------- MASTER  -------------------------
        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "GetBranches",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        List<DataModel.SP_GetBranches_RESTResult> GetBranches(DataModel.ClientData cd);

        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "GetWarehouse",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        List<DataModel.SP_GetWarehouse_RESTResult> GetWarehouse(DataModel.ClientData cd);

        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "GetTempos",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        List<DataModel.SP_GetTempos_RESTResult> GetTempos(DataModel.ClientData cd);


        //---------- GPS  -------------------------
        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "AddGpsData",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        bool AddGpsData(DataModel.ClientData cd);

        [OperationContract]
        [WebInvoke(
        Method = "GET",
        UriTemplate = "GetAllGpsData",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        List<DataModel.VW_GpsData> GetAllGpsData();

        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "GetTempoGPSPath",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        List<DataModel.SP_GetTempoGPSPath_RESTResult> GetTempoGPSPath(DataModel.ClientData cd);


        //---------- Delivery TRANS  -------------------------
        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "GetReadyDeliveryData",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        List<DataModel.SP_GetReadyDelivery_RESTResult> GetReadyDeliveryData(DataModel.ClientData cd);

        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "SaveDeliveryStatus",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        bool SaveDeliveryStatus(DataModel.ClientData cd, List<DataModel.ClientData> listCD);


        //---------- REPORT  -------------------------
        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "GetAllActiveTempoOnField",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        List<DataModel.SP_GetAllActiveTempoOnField_RESTResult> GetAllActiveTempoOnField(DataModel.ClientData cd);

        [OperationContract]
        [WebInvoke(
        Method = "POST",
        UriTemplate = "GetDeliveredReport",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
        List<DataModel.SP_GetDeliveredReport_RESTResult> GetDeliveredReport(DataModel.ClientData cd);
    }
}